package com.xgzit.xgzmall.ware.dao;

import com.xgzit.xgzmall.ware.entity.WareSkuEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商品库存
 *
 * @author xgz
 * @email 923904706@qq.com
 * @date 2021-03-20 17:37:51
 */
@Mapper
public interface WareSkuDao extends BaseMapper<WareSkuEntity> {

    /**
    * 添加采购数据到仓库
    * @param skuId:
    * @param wareId:
    * @param skuNum:
    * @return void
    */
    void addStock(@Param("skuId") Long skuId, @Param("wareId") Long wareId, @Param("skuNum") Integer skuNum);
    /**
    * 查询库存
    * @param skuId:
    * @return long
    */
    Long getSkuStock(Long skuId);

    /**
    * 找到拥有 sku 这个商品的 所有仓库Id
    * @param skuId:
    * @return java.util.List<java.lang.Long>
    */
    List<Long> listWareIdHasSkuStock(@Param("skuId") Long skuId);

    /**
    * 锁定库存
    * @param skuId:
    * @param wareId:
    * @param num:
    * @return Long
    */
    Long lockSkuStock(@Param("skuId") Long skuId, @Param("wareId") Long wareId, @Param("num") int num);

    /**
    * 解锁库存
    * @param skuId:
    * @param wareId:
    * @param num:
    * @return void
    */
    void unlockStock(@Param("skuId") Long skuId, @Param("wareId") Long wareId, @Param("num") Integer num);
}
